package data
{
	import data.request.RequestBase;
	
	import flash.events.Event;
	import flash.utils.ByteArray;
	
	/**
	 *数据发送工厂 
	 */	
	public class DataSend
	{
		public function DataSend()
		{

		}
		
		/**
		 * 发送数据 
		 * @param dataPack 数据包
		 * @param callBack 回调方法
		 * @param packTransferType 数据包传输方式，默认为Socket AMF3方式
		 */		
		public function send(dataPack:DataPack):void
		{
			switch(dataPack.dataTransferType)
			{
				case DataTransferType.SOCKET_BYTE_ARRAY://Socket ByteArray方式
					SocketByteArraySend(dataPack);
					break;
				case DataTransferType.SOCKET_AMF3://Socket AMF3方式
					SocketAMFSend(dataPack);
					break;
				case DataTransferType.REQUEST://Reauest方式
					RequestSend(dataPack);
					break;
			}
		}
		
		/**
		 * Socket ByteArray方式发送数据 
		 * @param dataPack 数据包
		 */		
		private function SocketByteArraySend(dataPack:DataPack):void
		{
			DataFactory.Instance.socketData.socketOut.sendByteArrayPack(ByteArray(dataPack.data));
		}
		
		/**
		 * Socket AMF3方式发送数据 
		 * @param dataPack 数据包
		 */
		private function SocketAMFSend(dataPack:DataPack):void
		{
			DataFactory.Instance.socketData.socketOut.sendAMFPack(dataPack.data);
		}
		
		/**
		 * Request方式发送数据 
		 * @param dataPack 数据包
		 */		
		private function RequestSend(dataPack:DataPack):void
		{
			DataFactory.Instance.requestData.sendRequestPack(dataPack);
		}
	}
}